home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / swagg_m.zip / MEMORY.SWG / 0020_Detect EMS-XMS.pas < prev    next >
Pascal/Delphi Source File  |  1993-06-22  |  2KB  |  59 lines

  1. ===========================================================================
  2.  BBS: Canada Remote Systems
  3. Date: 06-12-93 (09:36)             Number: 26301
  4. From: CHRIS JANTZEN                Refer#: NONE
  5.   To: WILLIAM SITCH                 Recvd: NO  
  6. Subj: RE: DETECTING EMS/XMS          Conf: (1221) F-PASCAL
  7. ---------------------------------------------------------------------------
  8. On Thursday June 10 1993, William Sitch wrote to All:
  9.  
  10.  WS> Does anyone know how to detect XMS/EMS?  I've used something documented in
  11.  WS> my PC INTERRUPTS book, but I can't seem to get it to work.
  12.  
  13. The following code was *mostly* right. Go back to your original source to
  14. compare the changes I made:
  15.  
  16.  procedure check_ems (VAR installed:boolean; VAR ver,ver2:byte); var
  17.    regs  :  registers;
  18.  begin
  19.    regs.ax := $46;
  20.    intr($67,regs);
  21.    installed := regs.ah = $00;
  22.    if (installed = true) then
  23.      begin
  24.        ver := hi(regs.al);
  25.        ver2 := lo(regs.al);
  26.      end;
  27.  end;
  28.  
  29.  procedure check_xms (VAR installed:boolean; VAR ver,ver2:byte); var
  30.    regs  :  registers;
  31.  begin
  32.    regs.ax := $4300;
  33.    intr($2F,regs);
  34.    installed := regs.al = $80;
  35.    if (installed = true) then
  36.      begin
  37.        regs.ax := $4310;
  38.        regs.ah := $00;
  39.        intr($2F,regs);
  40.        ver := regs.ax;
  41.        ver2 := regs.bx;
  42.      end;
  43.  end;
  44.  
  45.  WS> I am pretty sure I'm calling the interrupts right, but it always returns
  46.  WS> false, indicating that I do NOT have EMS/XMS, although I do.  Can anyone
  47.  WS> help me out?
  48.  
  49. You were. Mostly. What you forgot was that when a real world book like PC
  50. Interrupts says "Load the AX register with the value 4300h", it means to us
  51. Pascal programmers "Load the AX variable with the value $4300". Note the dollar
  52. sign. That means hexadecimal (like the little h on the end means hexadecimal to
  53. assembly programmers).
  54.  
  55. Chris KB7RNL =->
  56.  
  57. --- GoldED 2.41
  58.  * Origin: SlugPoint * Coos Bay, OR USA (1:356/18.2)
  59.